#ifndef LIBACCENT_TESTS_TEST_BASE_HPP
#define LIBACCENT_TESTS_TEST_BASE_HPP

#include <accent/core.hpp>
#include <accent/stl.hpp>
#include <accent/utility/limit_traversal.hpp>
#include <gtest/gtest.h>
#include <vector>

using namespace accent;

typedef std::vector<int> ivec;

struct positive {
  bool operator ()(int i) const { return i > 0; }
};

template <typename Traversal, typename Container>
auto all_l(Container& c)
    -> decltype(limit_traversal<Traversal>(all(c)))
{
  return limit_traversal<Traversal>(all(c));
}

template <typename Container>
auto all_b(Container& c)
    -> decltype(all_l<bidirectional_traversal_tag>(c))
{
  return all_l<bidirectional_traversal_tag>(c);
}

#endif
